the ORACLE II Loading Instructions The ORACLE II comes supplied on a cassette tape which contains the cassette version on one side, named ORACC, and the DISK version on the other, named ORACD. Both versions are recorded twice. The cassette, as opposed to a diskette was chosen for longevity, and ease of storage. After you have copied the program with the following instructions, be sure to put the master copy in a safe place. First of all, the ORACLE II is just under 8k long and is most at home in a 32k computer, where it can be moved around or put above BASIC or DISK BASIC if your computer is 64k modified. Although this makes its use restrictive in a 16k computer, using hi-res graphics, it is still the best monitor available and can be used for lower resolution graphics and playing with your ROMS. The differences between the DISK and cassette versions are minor, but are documented here so you will know what you have. The DISK version has an added save and load function to support the DISK. The cassette function also works, but you have an extra choice. The DISK version also has a small module at the front of it, that detects whether you have the 1.0 DISK ROM, or the 1.1 ROM. This module changes part of the program depending on the ROM encountered, and after it is done is overwritten by the stack. This module is only needed when the ORACLE II is initially installed in your system, and when you save the backup copy the changes are already installed. Before you backup your copy of ORACLE II, you may want to customize it for your system. The areas that you can change are the monitor screen address, the graphics page and the load address. Because the program is written in P.I.C. (position independent code), it can be loaded anywhere in free memory. To change any of these variables, read the 'P', 'X' and 'Move' command instructions in this manual. When the ORACLE II is saved all options stay the way they are set upon loading. One other feature that 64k users may wish to incorporate is to have the ORACLE II automatically relocate itself in high RAM upon execution. To accomplish this feature, follow the instructions below but change the execution address to $222B for the cassette version, and $223E for the disk version (plus any offset if the ORACLE II was not loaded at $2000), and upon loading the ORACLE II will change the map type to all RAM and then move ROM to RAM, the monitor screen to $D900 and itself to $DE00. For those of you with 16k, and who want to save the program from $2000 on up, you should first type in 'PCLEAR 1:CLEAR0,8191'. This is also true of 32k users who wish to save the ORACLE II from $6000 and up. They should type in 'CLEAR0,24520'. Load the tape into your computer by typing CLOADM. You can also specify an offset if you wish to relocate the ORACLE II at any starting address other than $2000. Type EXEC and you should now be looking at the ORACLE II sign on message. Press any key on the keyboard to enter the ORACLE II command mode. You should now either put a new tape into your recorder, or a disk into drive 0. After the ORACLE II is in place, type 'W'. The ORACLE II will respond with 'WRITE'. Cassette versions should type in ORACC 2000 3ED0 2000, while disk versions should type in ORACD 2000 3FE5 2000 and press the enter bar. * Commands * The commands used by the ORACLE II consists of a single letter command, which is usually followed by an address or addresses. All addresses are expected to be in hexadecimal format unless stipulated otherwise in the following command list. If a command requires more than one parameter, then a space or a comma must be used to separate them. If you make a mistake in inputing data, you may backspace to correct it. The 'ENTER' key terminates input and initiates the command. If you wish to abort a command, press 'BREAK' and command will return to the command mode. Arrow keys. Pressing either the up or down arrow keys, when in the command mode, will allow you to page through memory one page at a time. This works for both HEX and ASCII displays. @ - ASCII/HEX toggle. Pressing the '@' key will allow the user to toggle between the ASCII display and the hex display. CLEAR - Monitor/graphics toggle. Pressing the 'CLEAR' key will allow you to toggle between the ORACLE II screen and the graphics screen. 'CLEAR' works in conjunction with the 'P' command and the 'V' command. That is, when 'CLEAR' is pressed, you will see the memory designated by the 'P' command in the graphics mode selected by the 'V' command. As an example, press 'CLEAR'. Nothing will appear to happen, but you are in the graphic mode. The reason for no apparent change, is that the ORACLE II is initialized to S64 graphics mode, and the graphic screen is set to memory page $0400. Now press the 'C' key. This is the color select key, and it will allow you to toggle between the two color sets. If everything is o.k. you should now have a red screen. Next press the 'SHIFT' and 'UP-ARROW' keys together. The screen has scrolled back a page, and you are looking at memory at $0200. Each time that a 'SHIFT/UP-ARROW' or 'SHIFT/DOWN- ARROW' is performed, the graphic screen scrolls forward or backwards 512 bytes. If you press the 'SHIFT/UP-ARROWS' again you should be at page $0000. The changing graphics block that you can see is the timer byte, that is continuously changing. A - Alter memory. Typing an 'A' will get the response 'CHANGE'. Enter a 4 character hexadecimal address and the screen display will update to display memory from the address entered. If no address is given, and only the enter key is depressed, the ORACLE II defaults to the current page on the screen. The hex byte located at the specified address will appear in the upper left corner and will be inverted. The screen will also display 'DATA' and wait for you to enter a 2 digit hexadecimal byte. After entering the byte the memory will update the data at the memory location specified, and then move the cursor to the next byte. If you don't want to change the inverted byte you can press one of the four arrow keys to move the cursor around in memory. To abort back to the command mode, press the 'BREAK' key. B - Breakpoint setting. Pressing the 'B' key will get the response 'BREAKPOINT'. You may now enter a 4 digit hexadecimal address where you wish to set a breakpoint. Breakpoints cannot be set in rom. The ORACLE II will set up a SWI ($3F) at the address specified, and store the address on your screen at one of the breakpoint registers. This will allow you to see where your breakpoints are set. The user is allowed 3 breakpoints in all. To clear the breakpoints, see the 'C' and 'F' commands. When a breakpoint is encountered by the ORACLE II, the registers are updated to the value when the breakpoint was encountered. The address in the P.C. register is the address that the SWI (3F) was encountered at. C - Clear breakpoints. Pressing the 'C' key will cause the ORACLE II to clear all breakpoints set by the ORACLE II, and restore memory back to its original condition. The breakpoint table is also cleared. D - Display memory. Pressing the 'D' key will get the response 'DISPLAY'. After you enter a 4 digit hexadecimal address, the screen will display the memory at the specified address. E - Disassemble to printer. 'E' will respond with 'DISASSEMBLE'. You should now enter a 4 digit hexadecimal starting address, and a 4 digit hexadecimal ending address. The ORACLE II will now start disassembling memory at the address specified, to the ending address. If a byte is not a legal op-code or doesn't have a legal operand then the byte is printed by itself and the message '*ILLEGAL OP-CODE*' is printed. This will usually happen when disassembling a table or ASCII code. This will show up very easily on your printout in the ASCII column, and will allow you to pick out words. The format used by the printout is: 3000 BDA1C1 ... JSR $A1C1 The first column is the address of the bytes being decoded in hexadecimal format. The second column is the hexadecimal representation of the mnemonic being decoded. The third column is the ASCII equivalent of the hexadecimal bytes. If these valued are lower than $20 or greater than $7F, they are shown as a dot. The last column is the decoded mnemonic. When the 'E' command is invoked, a check is made to see if a printer is connected to the serial port of the Color Computer. If no printer is connected, the command is aborted. To stop printing, in the middle of a disassembly, press the 'Q' key. When the 'Q' key is pressed, or when the disassembly is complete, command will return to the command mode. No provision has been made to generate a cross reference table or label table. This is because of the relocatable nature of the ORACLE II, and the memory required to generate these addresses. F - Fix breakpoint. The 'F' command is used to remove only the breakpoint at the address shown in the P.C. register. This is not a necessary move because when you 'GO' to an address the ORACLE II checks to see if a breakpoint is set there, and if so restores it back to its original condition. This command is most useful for clearing only one breakpoint after it has been encountered in a program, and setting up another breakpoint somewhere else in your program. When 'F' is pressed the ORACLE II checks to see if a breakpoint is set at the address shown in the P.C. register, and if so will restore memory to its original condition and clear that address from the screen breakpoint table. If no breakpoint was set at the address shown in the P.C. register, then no action will be taken. Command automatically returns to the command mode after this command is invoked. G - Go with breakpoints. The 'G' command is used to reenter a machine language program after a breakpoint has been encountered. Go will load all the registers as they are shown on the screen, and then jump to the address shown in the P.C. registers. The differences between 'G'o and 'J'ump are that 'G'o uses the stack address shown on the screen, while 'J'ump uses the ORACLE II stack. 'G'o and 'J'ump also set up the graphic screen to the mode specified by the 'V' command at the address specified by the 'P' command. This allows you to be debugging a graphic program, and as long as the mode and graphic screen locations have been specified, will return you to the graphic screen you were watching when a breakpoint was encountered. As a precaution pressing 'G' will get the response 'GO-ARE YOU SURE (Y/N)'. Pressing any key other than 'Y' will abort the command, and return you to the command mode. H - Hexadecimal to decimal conversion Pressing 'H' will get the response 'HEX'. Enter any 4 digit hexadecimal number, and the ORACLE II will convert it to a decimal number. After a conversion you can either press the 'BREAK' key to return you to the command mode, or press any other key to do another conversion. I - Decimal to hexadecimal conversion. Pressing the 'I' key will get the response 'DECIMAL'. A decimal number of up to 5 digits can now be entered, and the ORACLE II will convert it to a 4 digit hexadecimal number. If the number you enter is less than 5 digits in length, then the 'ENTER' key must be pressed to force the conversion. After the conversion, 'BREAK' will return you to the command mode, and any other key will let you proceed with another conversion. J - Jump. 'J' is the command that should be normally used to initially enter a machine language program. 'J' will respond with 'JUMP'. A 4 digit hexadecimal address should be entered, and the ORACLE II will jump to the given address. All registers from the screen, except for the S.P. register are loaded into the registers, and a JSR (jump to subroutine) is performed. If a RTS (return from subroutine) is encountered, command will return to the ORACLE II command mode. This command is very useful for checking out rom or ram subroutines. As an example, press 'J'. After you get the 'JUMP' reply enter the address 'A1B1'. If the active screen is at $0400 you will get a flashing cursor on your screen. If you are not at the screen address $0400 you will not get the cursor. Now press any keyboard character and command will return to ORACLE II. All the registers are updated to the value that the subroutine, put there and the 'A' register will contain the hexadecimal value of the key you pressed. As with 'G'o, the graphic screen which is selectable with the 'P' command, and the graphic mode selected with the 'V' command becomes the active screen and graphic mode. L - Load from tape or disk. Pressing 'L' will get the response 'LOAD'. You should now enter the name of the machine language program that you want to load. The extension should not be used. A 4 digit hexadecimal offset may also be entered. Disk versions will now display 'TAPE OR DISK' and you should now enter either 'T' or 'D'. Loading will now start and when loaded, the transfer address will be displayed in the P.C. register. If the program loads too low in ram for disk or tape saves, then loading will be aborted, and the starting load address will be in the P.C. register. The message 'LOAD TOO LOW' will also be printed on your screen. This feature will allow you to reload the program with an offset. If the program is not on disk, or there is a disk problem of some sort, the error message 'DISK ERROR' will be displayed, and command will return to the ORACLE II. Special note on loading programs. A lot of the available programs on the market have special preloaders, and subroutines that when loaded, take over your computer. An example of this is the program that initially loads at $009F. The routine that loads here usually loads the program and then automatically starts the program. This also causes your computer to restart the program if the reset button is pressed. The ORACLE II automatically stops you from loading programs that load into low ram. To override this feature, you will need to enter the 'A'lter mode and then enter an address of 2BFA for cassette versions, and 2CCB for disk versions. Cassette versions should show a value of $04 and disk version $0A. Change this value to $00 and the ORACLE II will load in anything. The above addresses rely on the ORACLE II being loaded at $2000, and if loaded elsewhere you will have to offset the address. M - Move memory. 'M' will respond with 'MOVE'. Enter a start address, an ending address, and a new start address. Memory can be moved either up or down in memory and can be moved by only 1 space if necessary. If you use the 'M'ove command to move the ORACLE II be aware that if you overwrite the active program, you could lock up your computer. P - Page select (Video screen location) 'P' will respond with the message 'PAGE SELECT' followed by the address of the current memory location in the upper left corner of the video screen. If the address is the screen location you want, then just press 'BREAK', and command will return to the command mode. If you want to change the location of the graphic screen, then press the 'C' key, and the message displayed will change to 'CHANGE PAGE SELECT'. You should now enter the 4 digit hexadecimal address that you want the graphic screen to start on. Upon entry of the address, the message 'PAGE SELECT' will again appear with the new address, and if this is as desired, then 'BREAK' will return you to the command mode. The reason for the 'P' and the 'X' commands are that your monitor screen can be located or relocated on any 512 byte page in memory. When the ORACLE II is initially started, the ORACLE II monitor screen is located on the page starting at address $0400. This address will interfere with quite a few programs that you may be stepping or debugging. That is the target program may also be using the screen, starting at address $0400. If you had no control of where your screen is, and you reenter the ORACLE II after running the target program, the monitor screen would overwrite the screen that the target had put there. This is avoided by allowing you to define where in memory you want the monitor screen to start, and where the target screen is. Q - Quit. Pressing the 'Q' key will allow you to enter basic. If you desire to reenter the ORACLE II then all you need to do is type 'EXEC'. If you have loaded another program into memory, then it may also be necessary to input the starting address of the ORACLE II as well. If you have moved the ORACLE II, then make a note as to the first byte of where the ORACLE II is. This is the execution address of the ORACLE II. R - Register change. Pressing the 'R' key will respond with 'CHANGE'. You can now enter one of the registers (X Y U S A B P D C), followed by either a 2 or 4 digit hexadecimal number. The ORACLE II will only allow the correct input. After the data is entered, the register on your screen will update to the specified value, and return you to the message 'CHANGE'. You can now change another register, or press the 'BREAK' key to return to the command mode. S - Search memory. 'S' will get you the prompt 'SEARCH'. You should now enter a start address and an ending address. If no address in entered the ORACLE II will default to a full memory search. The message 'DATA' will now appear. You now have a choice of either a hex or an ASCII search. If you want to search a hex string press '$' followed by the hex data. No spaces are allowed between the data and you can enter up to 10 bytes. Pressing enter will initiate the search. If you want to search an ASCII string, type the data at the 'DATA' command. If a match is found, then the screen is updated to show the location of the match, and the message 'PRESS ANY KEY TO CONTINUE' is displayed. If the 'BREAK' key is pressed, then command will return to the main command mode, and the most recent match is kept displayed on the screen. If you want to see the next match, then press any other key. Upon finding all matches, command returns to the command mode. T - Tape to disk transfer. (Disk version only) Pressing the 'T' key will start the tape to disk transfer. The ORACLE II will load the first machine language program that is encounters on tape and attempt to load it into memory. If the program loads too low in ram for Disk basic, then the message 'LOADS TOO LOW' will be displayed on your screen, and loading is aborted. The address that the program loads to will be printed in the P.C. register, allowing you to 'L'oad the program in with an offset value, and 'W'rite the program to disk. When the ORACLE II loads a tape that will operate in the disk basic environment, then the program loads into memory, the name is printed on the screen and when loading is complete, is saved to disk using the same name as it was recorded on the tape. U - Upper ram transfer. Pressing the 'U' key will cause the ORACLE II to relocate itself and its screen into upper memory. This command supports the 64k nor-gate modification, and SPECTRAL ASSOCIATES 'Supercharger'. When this command is initiated, the message 'transferring ROM TO RAM' is displayed, and a check is made to see if your computer can support 64k. If your computer is not able to access the full 64k then an error message is displayed and command is returned to the main command mode. The ORACLE II will move rom to ram, and then move itself to $DE00 and moves its screen to $DA00. The stack is just before $DE00 and everything else is as it was before you moved the program. This ability of the ORACLE II allows you to leave all lower 32k of ram, including the standard screen alone allowing the target program total use of memory. If this command is invoked when it is in ram then the message 'THE ORACLE II IS IN RAM' will appear, and the command is aborted. V - Video select. 'V' will get the response 'GRAPHIC MODE'. You can now enter one of the graphic modes as listed in the following list. These modes as listed are the same as those supported by basic and extended basic and use the same mode names. The ORACLE II also supports those unsupported modes. The modes supported are: SG4 - 64 * 32 SCREEN - 8 COLORS SG6 - 64 * 48 SCREEN - 4 COLORS SG8 - 64 * 64 SCREEN - 8 COLORS SG12 - 64 * 96 SCREEN - 8 COLORS SG24 - 64 * 192 SCREEN - 8 COLORS G1C - 64 * 64 SCREEN - 4 COLORS G1R - 128 * 64 SCREEN - 2 COLORS G2C - 128 * 64 SCREEN - 4 COLORS G2R - 128 * 96 SCREEN - 2 COLORS G3C - 128 * 96 SCREEN - 4 COLORS G3R - 128 * 192 SCREEN - 2 COLORS G6C - 128 * 192 SCREEN - 4 COLORS G6R - 256 * 192 SCREEN - 2 COLORS After entry of a mode, command will return to the main command mode. When the 'CLEAR' key is pressed, the graphic mode selected with this 'V' command will be displayed. W - Write. Typing 'W' will get the response 'WRITE'. You should now enter a name, a starting address, an ending address and an execution address. All addresses are expected in hexadecimal format. The name must be no more than 8 characters in length. The disk version of the ORACLE II will now prompt for 'DISK OR TAPE'. Enter either a 'D' or a 'T' and the program will be written to the media specified. The program saved can be loaded with the 'LOADM' or 'CLOADM' command from basic. X - Monitor screen select. The 'X' command allows you to move the ORACLE II screen anywhere in memory. This feature is to ensure that there is no conflict between the target screen and the monitor screen. To utilize this feature you should first ascertain where in memory the target program is and where the target program puts its screen. An example would be a program that loads into memory from $1000 to $2000. Its screen starts at $0400 and is in graphic mode SG4, which means that it takes 512 bytes for screen memory. With the ORACLE II you should set the graphic screen value to $0400 with the 'P' command. The graphic mode should be set to SG4 with the 'V' command. You should now use the 'X' command to reset the monitor screen. Press the 'X' key and the response will be 'PAGE SELECT=' followed by the address that the graphic page starts, in hexadecimal format. To change this address, press the 'C' key and the message 'CHANGE PAGE SELECT' will be displayed. You should now enter the address that you want the monitor screen to occupy. With the above example, you could use $0600 which would put the screen above the target program. After the address is entered, you will get the original message shown when you entered the 'X' command, showing the new page address you entered. To leave the command, press the 'BREAK' key and command will return to the main command mode, and the screen will be at the value entered. When you use the 'G'o command, or are stepping the program, the screen is changed to the one selected with the 'P' command. When you are returned to the ORACLE II, the screen selected with the 'X' command is selected as the active screen. Z - Zap memory. 'Z' is the command used to invoke the 'Z'ap command. When 'Z' is pressed, the message 'ZAP' will appear on your screen. You have to now enter a start address and an ending address followed by the byte that you wish to zap memory with. As an example press 'Z' and get the 'ZAP' prompt onto your screen. Now enter $0600 $0800 $FF. This will fill memory from $0600 to $0800 with the value of $FF. SINGLE STEPPER The stepper routine in the ORACLE II is treated as a separate program because it has to run in its own environment. That is, you first invoke the stepper, and after it is in the stepper mode you can then enter many different commands, which control the speed and how the stepper runs. While in the stepper mode you can use most of the commands that are available while in the ORACLE II command mode. Those that can't be used are 'Load', 'Write', 'Breakpoint', 'Go', and 'Jump'. Breakpoints can't be used because the stepper makes use of the SWI ($3F), and a breakpoint will confuse it. When the stepper is invoked, all breakpoints that were set as shown in the breakpoint table are cleared. There should not be any reason to use breakpoints while stepping anyway, so this should not be a problem. If your program uses a SWI ($3F), then replace it with a SWI2 or SWI3 ($103F or $113F). If a SWI ($3F) is encountered while stepping, an error message will be displayed, and stepping will be abroted. Command will return to the monitor, and the address that the error was encountered at will be in the P.C. register. The above is true for all errors encountered, whether it be a bad op-code, or an illegal operand. The error message 'BAD OP- CODE' is displayed on your screen for a few seconds, and then control returns to the monitor command mode. Mention should be made of the stack as used by the ORACLE II. The ORACLE II proper has a stack that is at its beginning. When stepping is invoked, the address in the S.P. register is checked. If the address will interfere with the ORACLE II or its stack, then a default stack is started 50 bytes below the ORACLE II start. The same is true if the address in the S.P. register is $000, which is the value at startup. If you are not sure if the stack will hurt your program then use the 'Register' command to change the S.P. register to $0000. This will allow the ORACLE II to set up a safe default stack. If your program specifies a stack, this of course will override the default address. As each step is run all registers affected by the instruction, are updated, and may be changed with the 'R' command. This is especially useful if you are in a large delay loop, or are stepping all commands singly and the command is trying for a keyboard input. Also remember, that while single stepping, you are running about 500 instructions a second depending upon the stepping mode you are in. What this means in simple terms is that it will take you about 10 to 15 minutes to setp 1 program that you are stepping, and the way you are stepping the program. If a program is written with a lot of subroutines and you are steppin under all rom and ram subroutines, then the speed is quite fast. The screen formate that the stepper uses will appear as below: BDA1C1 ... JSR $A1C1 The bytes in the first line are the instruction in hex format. The characters to the right, are the bytes as they would appear on your screen. These can be anything from graphic blocks, to letters and numbers. The last line will show the instruction in its mnemonic form. If the mnemonic is a relative branch it will be shown as BSR $3000, that is the address that the branch is to, not the relative offset from the program counter. * COMMANDS * SHIFT @ - Start single stepping. Pressing SHIFT @ will get the response 'SINGLE STEP'. You should now enter the 4 digit hex address where you wish to start stepping. If you loaded the program to step from disk or tape, the trace address is already in the P.C. register, and pressing will cause the stepper to default to the address shown in the P.C. register. After the address is entered, the bottom two lines are replaced with the hex equivalent of an instruction and the mnemonic that is decodes to. If the instruction is not a legal op-code, or has not a legal operand, you will get an 'ILLEGAL OP-CODE' message, and stepping will be aborted. As stated earlier, SWI ($3F) will also cause the above error message. If the instruction is decoded correctly you now may enter one of the following commands to control how you step the target program. L - Disassemble to screen. If 'L' is pressed, the ORACLE II will start disassembling the instructions at the address in the P.C. register. To go to the next instruction press 'ENTER' and the next successive instruction will be decoded. If an illegal op- code is found (caused by a table or ASCII message), the first byte will be shown with its ASCII equivalent, and an error message will be shown. 'ENTER' will again go to the next instruction. Remember that data can look like an instruction designed to check out some instructions without having to disassemble a whole lot of memory. 'BREAK' will return you to the command mode. When using the quick disassemble mode, the instructions are not stepped, and thus no registers will be updated. The P.C. register will be the only one changing as it keeps track of the address being decoded. T - Trace. 'T' will start stepping ram or rom at slow speed, but will stop when it reaches either a JSR or BSR instruction. This feature allows you to jump through a subroutine, or by pressing 'T' again, starts single stepping the subroutine. To stop automatic stepping, pressing the 'Q'uit key. Pressing the number keys (1-9) will control, the speed that you can step. If 'Q' is pressed or a subroutine is reached, the speed reverts to slow speed (1). N - Nonstop stepping. 'N' will cause the ORACLE II to step nonstop through rom or ram. This is the slowest way to step as all instructions are decoded, and all subroutines in rom are stepped. The only way to abort 'N'onstop is to press the 'Q'uit key. As in the 'T'race mode, the number keys (1-9), control the speed. U - Under rom routines. 'U' is like the 'T' command except that when a subroutine to rom is called, the subroutine is jumped through. This saves considerable time as usually there is no reason to step rom. E - Entire memory routines. 'E' is like the 'T' command except that all subroutines are jumped through. This is the fastest way to step a program. Q - Quit stepping. 'Q' will cause stepping to stop, no matter which mode you are in. If you are looking at the graphic screen, the monitor screen will become the active screen. 1-9 - Speed control. After stepping is initiated, such as pressing the 'N' key, the stepping speed can be controlled by the number keys. 1 is the slowest and each successive key is twice as fast as the previous number. Speed can be controlled either up or down. 'Q' sets the speed to 1, the slowest. J - Jump through subroutine. If you are at a subroutine, either rom or ram, pressing 'J' will cause you to jump through the subroutine. This is especially useful when stepping with the 'T' key, allowing you to step a routine, or jump through the ones that you know are okay. If 'J' is pressed while there is no subroutine to step, then the command is ignored. ENTER - Ahead one. Pressing ENTER while the stepper is stopped, will trace ahead one instruction. SHIFT @ - Printer control. SHIFT @ is the printer toggle. This command will cause the bottom two lines to be routed to your printer. This can be used in any of the stepper modes, and will display the mnemonics as they are being traced. Remember that tracing will be slowed to the speed of your printer. There can also be a problem if your target program is using sound routines, as these use the same PIA and can cause garbage to appear on your printer. The format used for the printout is: $3000 BDA1C1 ##$ JSR $A1C1 The first set of numbers is the hex address of the instruction. This is followed by the instruction in hex format, then ASCII equivalent of the instruction. If the byte is of a value of more than $7F or less than $1A then it will be shown as a dot. The last column is the mnemonic. When the printer is invoked, there is a check to see if a printer is connected to your computer, and if one is an inverted 'P' will be displayed in the upper left corner of the monitor screen. If no printer is connected, then control is sent to the main command mode. An error message will report 'PRINTER NOT READY'. If the SHIFT @ keys are pressed, while the printer is on, then the printer is toggled off. SHIFT CLEAR - Interrupt toggle. Pressing the SHIFT and CLEAR keys simultaneously, will allow you step all interrupts through there interrupts routines. Stepping the interrupts, is needed sometimes as some programs use there own interrupts routines instead of the ones supplied by basic. You should be aware that stepping interrupts as they are generated, adds considerably to the time it takes to single step a program. This feature steps all interrupts, including, FIRQ, IRQ, NMI,SWI2, and SWI3. When the interrupts toggle is on, an inverted 'I' will show in the upper right corner. To disable the stepping of the interrupts routines, press SHIFT CLEAR again and the interrupts will be done again in real time. BREAK - Abort stepping. Pressing the break key will abort stepping and return you to the monitor command mode. 'BREAK' will not work while you are rapid stepping, that is you must stop rapid step with the 'Q' key and then press 'BREAK' to return to the command mode. * Practice Tutorial * This chapter is a tutorial which will lead you through writing, testing, stepping and saving a machine language program. If this section is followed, you will understand how the ORACLE II is used, and become familiar enough with it to use it in many imaginative ways. Before we start, you should first locate the sample program TEST in the back of this manual. This is a short machine language program, which will change the graphic mode to G3C (the same as PMODE 3), and put a small graphics character on your screen. The character can be moved by any of the 4 arrow keys. The second thing to do is to load the ORACLE II into memory. The ORACLE II must load into memory at least at $2000 hex or higher. Do not load it any lower than $2000 or it will conflict with the object program you will be entering. To start, you will need to enter the program into memoyr, so press the 'A'lter key, and for a memory location enter 1000. The screen will update to show memory from hex $1000, and the byte in the upper left hand corner will be inverted. This is the value of $1000. You should now enter the data in the second column in the source listing of TEST. The first column in the listing is the memory address, and the second column is the hexadecimal instructions. The data following the instructions are the mnemonics and after these are the comments. As you enter the bytes shown, the cursor will move automatically to the next location. If you make an error, all you need to do is press the arrow key which points in the direction that you wan the cursor to move, and then enter the correct data. After you have entered all the data press the 'BREAK' key to return to the main command mode. After the program is entered into memory and you are sure it is correct, you will want to save it on either tape or disk. To do this type 'W' and the ORACLE II will respond with 'WRITE'. Now type the line listed below exactly as it is shown. TEST 1000 10BC 1000 If you are saving to cassette, now is the time to ready your cassette recorder for recording. After the data is entered and shows on your screen as the above, press 'ENTER'. If you have the cassette version of the ORACLE II, the program will start to save the program to tape. The disk version will prompt for 'DISK or TAPE?'. Press either the 'D' or 'T' key depending on which media that you want to save the data to, and the program will be saved.